package edu.cgpi.core.util;

import java.lang.reflect.Constructor;
import java.util.HashMap;
import java.util.Map;

import edu.cgpi.core.comando.Comando;
import edu.cgpi.view.GerenciadorUI;
import edu.cgpi.view.PainelDesenho;

public class FabricaComandos {

	private static Map<TipoImagem, Comando> comandos = new HashMap<TipoImagem, Comando>();
	
	public static Comando criarComando(TipoImagem tipoImagem) {
		Comando comando = comandos.get(tipoImagem);
		if(comando == null){
			try {
				Constructor<? extends Comando> construtor = tipoImagem.getClasseComando()
						.getDeclaredConstructor(PainelDesenho.class);
				PainelDesenho painel = GerenciadorUI.getInstance().getPainelDesenho();
				comando = construtor.newInstance(painel);
				comandos.put(tipoImagem, comando);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return comando;
	}
}